1. Field of the Invention
The present invention relates to a modular decoder employing at least one constituent decoder for decoding encoded data, such as turbo or turbo-like encoded digital data. More particularly, the present invention relates to system and method for decoding encoded data, such as turbo encoded digital data, that employs one or more cascadable modular decoders arranged such that each decoding iteration provides information relevant to decoding the data to its succeeding decoding iteration to improve decoding accuracy.
2. Description of the Related Art
Forward error correction (FEC) is necessary in terrestrial and satellite radio systems to provide high quality communication over the radio frequency (RF) propagation channel, which generally induces distortions in the signal waveform, including signal attenuation (free space propagation loss) and multi-path fading. These distortions drive the design of radio transmission and receiver equipment, the design objective of which is to select modulation formats, error control schemes, demodulation and decoding techniques, and hardware and software components that cooperate to provide an efficient balance between product performance and implementation complexity that drives product cost. Differences in propagation channel characteristics, such as between terrestrial and satellite communication channels, naturally result in significantly different system designs. Likewise, existing communications systems continue to evolve to satisfy higher system requirements for faster data rates and higher fidelity communication services.
A relatively new forward error correction scheme includes turbo codes and turbo like codes, which have been demonstrated to yield bit error rate (BER) performance close to the theoretical limit for useful classes of idealized channels by means of an iterative soft-decision decoding method. In this context, soft-decision refers to associating a confidence value with each demodulated information bit, in contrast to hard-decision demodulation, in which the demodulator decides whether each information bit is a one or a zero. The confidence value is generally expressed as one or more bits. The confidence value may be further refined by appropriate decoding techniques to converge to a high level of confidence in the systematic bits, thus reducing bit error rate (BER).
A turbo code typically consists of a concatenation of at least two or more systematic codes. A systematic code generates two or more bits from an information bit, or systematic bit, of which one of these two bits is identical to the information bit. The systematic codes used for turbo encoding are typically recursive convolutional codes, called constituent codes. Each constituent code is generated by an encoder that associates at least one parity data bit with one systematic or information bit. The systematic bit is one bit of a stream of digital data to be transmitted. The parity data bit is generated by the encoder from a linear combination, or convolution, of the systematic bit and one or more previous systematic bits. The bit order of the systematic bits presented to each of the encoders is randomized with respect to that of a first encoder by an interleaver so that the transmitted signal contains the same information bits in different time slots. Interleaving the same information bits in different time slots provides uncorrelated noise on the parity bits. A parser may be included in the stream of systematic bits to divide the stream of systematic bits into parallel streams of subsets of systematic bits presented to each interleaver and encoder. The parallel constituent codes are concatenated to form a turbo code, or alteratively, a parsed parallel concatenated convolutional code.
The ratio of the number of information bits to the number of parity bits in the transmitted signal is termed the code rate. For example, a code rate of 1/3 indicates that two parity bits are transmitted with each information bit. Repeated source data bits and some of the parity bits in the concatenated constituent codes may be removed or “punctured” according to a puncturing scheme before transmitting to increase the code rate. When a data stream is punctured, certain bits of the data stream are eliminated from the data stream transmission. For example, if a data stream having a length of 1000 bits is encoded at rate 1/3, 3000 bits are generated. To obtain a code rate 1/2, 1000 bits out of the 3000 bits are punctured or, in other words, not transmitted, to obtain 2000 transmitted bits.
After the encoded bits are transmitted over the RF channel, a demodulator recovers the source data at the receiver. In a typical turbo code decoder, soft channel information pertaining to the parity bits and systematic bits, as well as soft decision likelihood values representative of the confidence level of the estimated systematic bits, are input to a first constituent decoder. The decoder generates updated soft decision likelihood values for the estimated systematic bits. The updated soft decision likelihood values are passed to a second constituent decoder as a priori information after reordering in accordance with an interleaver identical to that used by the second constituent encoder in the turbo encoder.
In addition to the a priori information received from the first decoder, the second decoder uses the soft decision values for the estimated systematic bits and second encoder's parity bits to produce new updated values for the soft decision likelihood values. The soft decision likelihood values output from the second decoder containing updated likelihood information for the systematic bits are then fed back to the first decoder as a priori information, and the process is repeated. This decoding process may be repeated indefinitely, however, more than a small number of iterations generally result in diminishing returns. After the last iteration of the decoding process, a final decoder makes hard decisions that determine the systematic bits from this soft channel information and the soft decision likelihood values. One example of a conventional decoder is described in U.S. Pat. No. 5,446,747, the entire content of which is incorporated herein by reference.
The reliability of the hard decisions used to recover the source data bits clearly increases with the number of symbols taken into account. The higher the number of symbols, however, the more complex the decoder. The memory required quickly becomes substantial, as do the corresponding computation times.
The integrated circuits that implement turbo decoders are based on a compromise between cost and performance characteristics. These practical considerations prevent the construction of turbo decoders that correspond optimally to a given application.
A need therefore exists for a decoder that is capable of efficiently and effectively decoding data that has been encoded by, for example, a turbo or concatenated convolutional encoder, and that does not suffer from the drawbacks associated with conventional decoders as discussed above.